package com.cskaoyan.javase.overload._1basic;

/**
 * 如果我想在很多方法中，唯一地找到一个方法，需要明确什么？
 *      1.首先需要知道名字
 *      2,其次还需要知道形参列表
 *      总是,知道方法的签名就能够唯一确定一个方法
 *
 * 如果类中有多个方法,构成方法的重载,那么编译器又如何明确一个方法呢?
 *      1.方法名相同了,要看形参列表
 *          比如什么数据类型,比如有无参数,几个参数等.
 *      2.多个方法构成方法重载,编译器会遵循"就近原则"去筛选这个方法
 *          就近原则,是Java语法设计中相当重要的一个原则
 *              当有多个内容能够同时匹配时,优先考虑"最近"的.
 *              byte --> short --> int --> long --> float --> double
 *
 *  但是就近原则不是万能的,总有没有办法确定"谁更近"的时候,一旦出现这种场景
 *      就近原则的逻辑不自恰,就会编译报错.
 *
 * @since 14:55
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // test(10);
        // Ambiguous method call: both 'Demo.test(int, double)' and 'Demo.test(double, int)' match
        // test(1,1.0);
    }

    public static void test() {
    }

    // public static void test(int a){}
    public static void test(double a) {
    } //1

    public static void test(float a) {
    } //2

    public static void test(long a) {
    } //3

    public static void test(int a, double b) {
    } //1

    public static void test(double a, int b) {
    } //2
}
